package com.sourceQ.system.service.message.mail;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sourceQ.system.domain.message.mail.SysMailAccount;
import com.sourceQ.system.domain.message.mail.SysMailLog;
import com.sourceQ.system.domain.message.mail.SysMailTemplate;
import com.sourceQ.system.dto.message.MailLogPageReqDTO;

import java.util.Map;

/**
 * @author: SourceQ
 * @create: 2024-04-18 17:22
 * @Description:
 */
public interface SysMailLogService extends IService<SysMailLog> {

    /**
     * 邮件日志分页
     *
     * @param pageReqDTO 分页参数
     * @return 分页结果
     */
    IPage<SysMailLog> getMailLogPage(Page page,MailLogPageReqDTO pageReqDTO);

    /**
     * 获得指定编号的邮件日志
     *
     * @param id 日志编号
     * @return 邮件日志
     */
    SysMailLog getMailLog(Long id);

    /**
     * 创建邮件日志
     *
     * @param userId 用户编码
     * @param userType 用户类型
     * @param toMail 收件人邮件
     * @param account 邮件账号信息
     * @param template      模版信息
     * @param templateContent 模版内容
     * @param templateParams 模版参数
     * @param isSend        是否发送成功
     * @return 日志编号
     */
    Long createMailLog(Long userId, Integer userType, String toMail,
                       SysMailAccount account, SysMailTemplate template ,
                       String templateContent, Map<String, Object> templateParams, Boolean isSend);

    /**
     * 更新邮件发送结果
     *
     * @param logId  日志编号
     * @param messageId 发送后的消息编号
     * @param exception 发送异常
     */
    void updateMailSendResult(Long logId, String messageId, Exception exception);
}
